FROM python:3.9-slim

# 设置工作目录
WORKDIR /app

# 设置环境变量
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1

# 安装系统依赖和ngrok
RUN apt-get update --fix-missing && apt-get install -y --fix-missing \
    gcc \
    curl \
    unzip \
    procps \
    && rm -rf /var/lib/apt/lists/* \
    && curl -sSL -o /tmp/ngrok.zip https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.zip \
    && unzip /tmp/ngrok.zip -d /usr/local/bin \
    && chmod +x /usr/local/bin/ngrok \
    && rm /tmp/ngrok.zip

# 复制requirements文件
COPY requirements.txt .

# 安装Python依赖
RUN pip install --no-cache-dir -r requirements.txt

# 复制应用代码
COPY . .

# 创建上传目录
RUN mkdir -p /bak/share
RUN chmod 777 /bak/share

# 创建数据库目录
RUN mkdir -p /app/data

# 创建启动脚本
RUN echo '#!/bin/bash' > /app/start.sh && \
    echo 'echo "配置ngrok认证token..."' >> /app/start.sh && \
    echo 'ngrok config add-authtoken 2UV9ZZIeBmQjK7bZyjXae3P6852_32H673LzL1Jjb3nXnvBC6' >> /app/start.sh && \
    echo 'echo "检查应用文件..."' >> /app/start.sh && \
    echo 'ls -la /app/' >> /app/start.sh && \
    echo 'ls -la /bak/share/' >> /app/start.sh && \
    echo 'echo "当前工作目录: $(pwd)"' >> /app/start.sh && \
    echo 'echo "初始化数据库..."' >> /app/start.sh && \
    echo 'cd /app && python init_db.py' >> /app/start.sh && \
    echo 'echo "启动应用服务器..."' >> /app/start.sh && \
    echo 'cd /app && python app.py > /tmp/app.log 2>&1 &' >> /app/start.sh && \
    echo 'sleep 10' >> /app/start.sh && \
    echo 'echo "检查应用启动状态..."' >> /app/start.sh && \
    echo 'if pgrep -f "python app.py" > /dev/null; then' >> /app/start.sh && \
    echo '  echo "应用启动成功，PID: $(pgrep -f "python app.py")"' >> /app/start.sh && \
    echo '  echo "应用正在运行在端口5000"' >> /app/start.sh && \
    echo '  echo "启动ngrok内网穿透..."' >> /app/start.sh && \
    echo '  ngrok http 5000 --log=stdout' >> /app/start.sh && \
    echo 'else' >> /app/start.sh && \
    echo '  echo "应用启动失败，查看错误日志:"' >> /app/start.sh && \
    echo '  cat /tmp/app.log' >> /app/start.sh && \
    echo '  echo "尝试直接启动应用进行调试..."' >> /app/start.sh && \
    echo '  cd /app && python app.py' >> /app/start.sh && \
    echo 'fi' >> /app/start.sh && \
    chmod +x /app/start.sh

# 暴露端口（应用端口8080，ngrok管理端口4040）
EXPOSE 8080
EXPOSE 4040

# 启动脚本
CMD ["/app/start.sh"]